home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / cenvid / enviedit.bat < prev    next >
DOS Batch File  |  1995-07-18  |  2KB  |  54 lines

  1. @echo off
  2. REM ***********************************************************
  3. REM *** EnviEdit.bat - Edit the environment with DOS editor ***
  4. REM *** ver.3                                               ***
  5. REM ***********************************************************
  6.  
  7. SET | CEnviD %0.bat
  8. GOTO CENVI_EXIT
  9.  
  10. // read all the environment variables to initially clear them
  11. fp = fopen("~ENVEDT~.BAT","wt");
  12. assert( fp );
  13. oldvcount = 0;
  14. while ( line = gets() ) {
  15.    if ( line[0]  &&  (Equal=strchr(line,'=')) ) {
  16.       strcpy(OriginalLine,line);
  17.       Equal[0] = 0;
  18.       // skip any environment variable that is in lower-case, such
  19.       // as the "windir" variable made by windows
  20.       if ( !strcmp(strupr(strcpy(UpperEnv,line)),line) ) {
  21.          oldvarlist[oldvcount++] = line;
  22.          fprintf(fp,"%s\n",OriginalLine);
  23.       }
  24.    }
  25. }
  26. fclose(fp);
  27.  
  28. // let the standard editor edit this file
  29. system(P_SWAP,"EDIT ~ENVEDT~.BAT");
  30.  
  31. // read in the newly-edited file
  32. fp = fopen("~ENVEDT~.BAT","rt");
  33. newvcount = 0;
  34. while ( line = fgets(fp) ) {
  35.    if ( line[0]  &&  (Equal=strchr(line,'=')) ) {
  36.       newvarlist[newvcount++] = line;
  37.    }
  38. }
  39. fclose(fp);
  40.  
  41. // add old lines to remove old variables
  42. fp = fopen("~ENVEDT~.BAT","wt");
  43. fprintf(fp,"@echo off\n");
  44. for ( i = 0; i < oldvcount; i++ )
  45.    fprintf(fp,"SET %s=\n",oldvarlist[i]);
  46. // add lines to set new variables
  47. for ( i = 0; i < newvcount; i++ )
  48.    fprintf(fp,"SET %s",newvarlist[i]);
  49. fclose(fp);
  50.  
  51. :CENVI_EXIT
  52. CALL ~ENVEDT~.BAT
  53. DEL ~ENVEDT~.BAT
  54.